package com.xxg.renrenproduct.service;

import com.xxg.renrencommon.domain.result.BaseResult;
import com.xxg.renrenproduct.domain.query.CarryProductQuery;
import com.xxg.renrenproduct.domain.query.DeleteCarryQuery;
import com.xxg.renrenproduct.domain.query.ListShopByStatusQuery;
import com.xxg.renrenproduct.domain.query.VerifyQuery;
import com.xxg.renrenproduct.domain.result.ListCarryProductResult;
import com.xxg.renrenproduct.domain.result.ShopInfoResult;

import java.util.List;

/**
 * 类说明
 *
 * @author szj
 * @date 2021/11/30
 */
public interface CarryProductService {
    /**
     * 带货商品
     *
     * @param userId 登录id
     * @param query  带货商品参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> carry(String userId, CarryProductQuery query);

    /**
     * 根据状态查询我收到的带货申请
     *
     * @param userId 登录id
     * @param query  根据状态查询店铺参数
     * @return
     */
    BaseResult<List<ShopInfoResult>> listShopReceiveByStatus(String userId, ListShopByStatusQuery query);

    /**
     * 根据状态查询我的带货申请
     *
     * @param userId 登录id
     * @param query  根据状态查询店铺参数
     * @return
     */
    BaseResult<List<ShopInfoResult>> listShopSendByStatus(String userId, ListShopByStatusQuery query);

    /**
     * 根据状态和店铺查询我收到的带货申请
     *
     * @param userId 登录id
     * @param query  根据状态查询店铺参数
     * @return BaseResult<ListCarryProductResult>
     */
    BaseResult<ListCarryProductResult> listReceiveByStatus(String userId, ListShopByStatusQuery query);

    /**
     * 根据状态和店铺查询我的带货申请
     *
     * @param userId 登录id
     * @param query  根据状态查询店铺参数
     * @return BaseResult<ListCarryProductResult>
     */
    BaseResult<ListCarryProductResult> listSendByStatus(String userId, ListShopByStatusQuery query);

    /**
     * 审核我收到的带货申请
     *
     * @param userId 登录id
     * @param query  审核参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> verify(String userId, VerifyQuery query);

    /**
     * 取消带货
     *
     * @param userId 登录id
     * @param query  取消带货参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> deleteCarry(String userId, DeleteCarryQuery query);
}
